package com.proyecto.core.vista.echo.componentes;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.ResourceBundle;

import nextapp.echo2.app.ContentPane;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.SplitPane;
import nextapp.echo2.extras.app.MenuBarPane;
import nextapp.echo2.extras.app.TabPane;
import nextapp.echo2.extras.app.layout.TabPaneLayoutData;
import nextapp.echo2.extras.app.menu.DefaultMenuModel;
import nextapp.echo2.extras.app.menu.DefaultOptionModel;

import com.proyecto.core.vista.beans.TransaccionBean;
import com.proyecto.core.vista.echo.constantes.TipoMenu;

import consultas.echo2consultas.SpWindowPane;
import nextapp.echo2.app.WindowPane;
import nextapp.echo2.app.Insets;
import nextapp.echo2.app.layout.SplitPaneLayoutData;
import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.Color;
import nextapp.echo2.app.ApplicationInstance;

public class WPTransaccionMultipleTab extends SpWindowPane {

	private ResourceBundle resourceBundle;

	private ContentPane CPExpediente;

	private String titulo = "";
	
	private WPTransaccion home;
	
	private ArrayList<TransaccionBean> lstTransaccion = new ArrayList<TransaccionBean>();

	private WPTransaccion wpPadre;

	private TabPane tabPrincipal;

	private SplitPane splitPane1;
	
	private String tituloMenu1;

	/**
	 * Creates a new <code>WPTransaccionMultipleTab</code>.
	 */
	
	public WPTransaccionMultipleTab(String pTitulo,  ArrayList<TransaccionBean> pLstTransaccion) {
		initComponents();
		this.setMaximized(true);
		this.lstTransaccion = pLstTransaccion;
		this.tituloMenu1 = pTitulo;
		this.customizarAreas();
		tabPrincipal.addPropertyChangeListener(new PropertyChangeListener(){
			public void propertyChange(PropertyChangeEvent evt) {
				System.err.println("Tab seleccionado "+tabPrincipal.getActiveTabIndex());
			}
		});
	}
	
	private void customizarAreas(){
//		this.setStyleName("OpenLabs.SpWPVentanasExpedientes");
		splitPane1.remove(0);
		splitPane1.add(generarMenu(), 0);
		ContentPane paneContenedor = null;
		for(int i = 0 ; i < this.lstTransaccion.size(); i++){
			paneContenedor = new ContentPane();
			TabPaneLayoutData cpld = new TabPaneLayoutData();
			cpld.setTitle(lstTransaccion.get(i).getWpTransaccion().getTitle());
			paneContenedor.setLayoutData(cpld);
			
			SpWindowPane spWP  = lstTransaccion.get(i).getWpTransaccion();
			spWP.setStyleName("2OpenLabs.SpWindowPane.WPTransaccion.Tab");
			if(i==0){
//				spWP.setWidth(new Extent(5000));
//				spWP.setHeight(new Extent(3000));
			}else{
				spWP.setWidth(new Extent(5000));
				spWP.setHeight(new Extent(3000));
			}

			paneContenedor.add(spWP);
			tabPrincipal.add(paneContenedor);
		}
	}

//	public WPTransaccionMultipleTab(String pTitulo, ICPAreaClaves pCPClave,
//			ArrayList<TransaccionBean> pLstTransaccion) {
//		super();
//
//		initComponents();
//		if (pCPClave != null) {
//			wpClaves = new WPClaves(pCPClave);
//		}
//		if (pTitulo != null) {
//			titulo = pTitulo;
//		}
//		lstTransaccion = pLstTransaccion;
//		inicializar();
//	}
	
//	private void inicializar() {
//		this.setTitle(titulo);
//		this.setMaximized(true);
//		this.setStyleName("OpenLabs.SpWPVentanasExpedientes");
//
//		splitPane1.remove(0);
//		splitPane1.add(generarMenu(), 0);
//		// configura la Transaccion Principal
//		if (wpClaves != null && lstTransaccion.size() > 0 && lstTransaccion.get(0).getWpTransaccion() !=null) {
//			int posic = 0;
//			wpPrincipal = lstTransaccion.get(posic).getWpTransaccion();
//			wpPrincipal.getAreaDatos().setEsPortada(true);
//			//TODO  buscar el primero que no sea reporte
//			wpPrincipal.setMaximized(true);
//			wpPrincipal.setStyleName("DefaultSPWinPaneSinTitulo");
//			wpPrincipal.setWpTransMultiple(this);
//			configurarListener(posic);
//			cpAreaTrabajo.add(wpPrincipal);
//			for (int posicion = 1; posicion < lstTransaccion.size(); posicion++) {
//				switch (lstTransaccion.get(posicion).getTipoVentana()) {
//				case TipoMenu.SECCION:
//					lstTransaccion.get(posicion).getWpTransaccion().activarAreas(false);
//					lstTransaccion.get(posicion).getWpTransaccion().setWpTransMultiple(this);					
//					break;
//				case TipoMenu.REPORTE:
//					break;
//				case TipoMenu.EXPEDIENTE:
//					break;
//				}//EoSW				
//			}
//			wpPrincipal.ejecutarAccion(AccionVentana.MODO_CANCELAR);
//			wpPrincipal.ejecutarAccionMostrarVentana();
//		}
//	}
	
	private MenuBarPane generarMenu() {
		DefaultMenuModel dm = new DefaultMenuModel("1", this.tituloMenu1);
		DefaultMenuModel dm2 = new DefaultMenuModel("2", "Reportes");
		MenuBarPane menuBarPane = new MenuBarPane();
		menuBarPane.setStyleName("OpenLabs.MenuBarPane.VentanasExpedientes");

		String idItem;
		String descripcionItem;
		Integer inicio = 0;
	
		for (int posic = inicio; posic < lstTransaccion.size(); posic++) {
			idItem = String.valueOf(posic);
			descripcionItem = lstTransaccion.get(posic).getIdDescripcion();
			
			switch (lstTransaccion.get(posic).getTipoVentana()) {
			case TipoMenu.SECCION:
				if(lstTransaccion.get(posic).isMostrarOpcionEnMenu()){
					dm.addItem(new DefaultOptionModel(idItem, descripcionItem, null));
				}else {
					//No se muestra la opcion en el menu
				}
				break;
			case TipoMenu.REPORTE:
				dm2.addItem(new DefaultOptionModel(idItem, descripcionItem, null));
				break;
			case TipoMenu.EXPEDIENTE:
				break;
			case TipoMenu.SEPARADOR:
				dm.addItem(new DefaultOptionModel(idItem, "_________________", null));
				break;				
			case TipoMenu.SEPARADOR_REPORTE:
				dm2.addItem(new DefaultOptionModel(idItem, "_________________", null));		
				break;				
			}	
		}//EoF...
		
		if (dm.getItemCount() > 0){
			((DefaultMenuModel) menuBarPane.getModel()).addItem(dm);
		}
		
		if (dm2.getItemCount() > 0){
			((DefaultMenuModel) menuBarPane.getModel()).addItem(dm2);
		}
		
//		menuBarPane.addActionListener(new ActionListener() {
//			private static final long serialVersionUID = 6692959853930366606L;
//
//			public void actionPerformed(ActionEvent arg0) {
//				Integer posic = Integer.parseInt(arg0.getActionCommand());
//				Object wpObj = cpAreaTrabajo.getComponent(arg0.getActionCommand());
//					switch (lstTransaccion.get(posic).getTipoVentana()) {
//					case TipoMenu.SECCION:
//						if (wpObj == null) {
//							lstTransaccion.get(posic).getWpTransaccion().ejecutarAccionMostrarVentana();
//							cpAreaTrabajo.add(lstTransaccion.get(posic).getWpTransaccion());
//						}else{
//							((WPTransaccion)wpObj).ejecutarAccionMostrarVentana();
//							activarWP(wpObj);
//						}
//						break;
//					case TipoMenu.REPORTE:
//							Object objDto = null;
//							if (wpPrincipal !=null){
//								objDto = wpPrincipal.getAreaDatos().getObjetoDTO();
//							}
//							lstTransaccion.get(posic).getProcesoReporte().imprimirReporte(objDto,aiTm, cpAreaTrabajo);
//						break;
//					case TipoMenu.EXPEDIENTE:
//						break;
//					}//EoSW
//			}
//		});

		return menuBarPane;
	}

	public WPTransaccionMultipleTab() {
		super();

		// Add design-time configured components.
		initComponents();
	}

	/**
	 * Configures initial state of component.
	 * WARNING: AUTO-GENERATED METHOD.
	 * Contents will be overwritten.
	 */
	private void initComponents() {
		resourceBundle = ResourceBundle.getBundle(
				"com.proyecto.core.vista.echo.resource.localization.etiquetas",
				ApplicationInstance.getActive().getLocale());
		splitPane1 = new SplitPane();
		splitPane1.setOrientation(SplitPane.ORIENTATION_VERTICAL_TOP_BOTTOM);
		splitPane1.setSeparatorPosition(new Extent(20, Extent.PX));
		add(splitPane1);
		MenuBarPane menuBarPane1 = new MenuBarPane();
		splitPane1.add(menuBarPane1);
		tabPrincipal = new TabPane();
		tabPrincipal.setTabActiveBackground(new Color(0xe6e6fa));
		tabPrincipal.setBorderType(TabPane.BORDER_TYPE_SURROUND);
		SplitPaneLayoutData tabPrincipalLayoutData = new SplitPaneLayoutData();
		tabPrincipalLayoutData.setAlignment(new Alignment(Alignment.CENTER,
				Alignment.CENTER));
		tabPrincipalLayoutData.setOverflow(SplitPaneLayoutData.OVERFLOW_AUTO);
		tabPrincipal.setLayoutData(tabPrincipalLayoutData);
		splitPane1.add(tabPrincipal);
	}
}
